The present application describes systems and techniques relating to network address routing using multiple routing identifiers.
A machine network is a collection of nodes coupled together with wired and/or wireless communication links, such as coax cable, fiber optics and radio frequency bands. A machine network may be a single network or a collection of networks, and may use multiple networking protocols, including an inter-networking protocol (e.g., the Internet Protocol (IP)). A node may be any machine capable of communicating with other nodes over the communication links using one or more of the networking protocols.
Many machine networks use packet switching, in which data to be sent over the network is first broken up into segments known as packets, and each packet is handled separately. Each packet typically includes a header with routing information such as a source address and a destination address. These addresses are frequently unicast addresses, which identify a specific destination node.
As packets travel through a network, they may be encapsulated within other packets one or more times. Encapsulation of packets enables data to travel from a source node to a final destination node through multiple networks, which may use different protocols and addressing schemes, without the two end nodes knowing anything about the intermediate addressing schemes and protocols.
Inter-networking addressing schemes typically are based on a network identifier and a node identifier, which together make up an address. For example, traditional IP addressing includes a network number and a host (node) number in each address. This allows routing of packets through a network based upon a destination network as well as a destination node.
Typically, packets are routed through a network using lookup tables stored in random access memory (RAM), such as Static Random Access Memory (SRAM). As each packet is received, its destination address is processed using a lookup table to identify a next-hop route. In IP, routing of packets also typically includes determining whether a destination address is a non-forwarding address and determining an address class for a destination address. Address classes are used, for example in IP, to identify the length of a network number within an address. The network number may identify a group of nodes on one or more networks that are administered together, typically with common rules and procedures (i.e., a domain).
Traditional IP routers route packets according to network class and network number. Due to limits imposed by IP network class routing, Classless Inter-Domain Routing (CIDR) techniques have been developed to allow aggregation of Class C IP addresses (i.e., supernetting). In traditional CIDR, routing is performed according to an address prefix defined by a network mask, and a longest-match-is-best approach is used. Effectively, variable portions of a network number may be used in routing, thereby identifying variable portions of one or more networks.
By assigning addresses (e.g., Class C addresses) to follow network topology (e.g., provider-based aggregation and geographical-based aggregation), CIDR enables efficient use of an address space and may minimize routing table entries. Moreover, techniques similar to CIDR also may be used to break down a Class A or B address (i.e., subnetting) to help preserve address space.
Details of one or more embodiments are set forth in the accompanying drawings and the description below. Other features and advantages may be apparent from the description and drawings, and from the claims.